package com.jinsi.util;

import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName R
 * @Content 返回数据信息
 * @Author 姚龙腾
 * @Date 2022-08-06 10:40
 */
public class R  extends HashMap<String, Object>{

    /**
     * 默认创建的返回对象
     */
    public R() {
        put("state", 200);
        put("msg", "success");
    }

    /**
     * 返回默认成功对象
     * @return R
     */
    public static R ok() {
        return new R();
    }

    /**
     * 自定义成功信息返回成功对象
     * @return R
     */
    public static R ok(String msg) {
        R r = new R();
        r.put("msg", msg);
        return r;
    }

    /**
     * 自定义成功对象返回成功对象
     * @return R
     */
    public static R ok(Object obj) {
        R r = new R();
        r.put("data", obj);
        return r;
    }

    /**
     * 自定义成功数据返回成功对象
     * @return R
     */
    public static R ok(Map<String, Object> map) {
        R r = new R();
        r.putAll(map);
        return r;
    }

    /**
     * 返回失败对象
     * @return R
     */
    public static R error() {
        R r = new R();
        r.put("state",500);
        r.put("msg","error");
        return r;
    }

    /**
     * 自定义失败信息返回失败对象
     * @return R
     */
    public static R error(String msg) {
        R r = new R();
        r.put("state",500);
        r.put("msg", msg);
        return r;
    }
    public static R error(Object obj) {
        R r = new R();
        r.put("state",500);
        r.put("msg","error");
        r.put("data", obj);
        return r;
    }
    /**
     * 自定义状态码和提示信息
     * @param code
     * @param msg
     * @return R
     */
    public static R custom(int code,String msg){
        R r = new R();
        r.put("state",code);
        r.put("msg",msg);
        return r;
    }


    /**
     * 自定义状态码和提示信息和数据
     * @param code
     * @param msg
     * @param obj
     * @return R
     */
    public static R custom(int code,String msg,Object obj){
        R r = new R();
        r.put("state",code);
        r.put("msg",msg);
        r.put("data",obj);
        return r;
    }


    /**
     * 根据layui表格进行封装的格式
     * @param code
     * @param msg
     * @param obj
     * @param count
     * @return R
     */
    public static R custom(int code,String msg,Object obj,Long count){
        R r = new R();
        r.put("code",code);
        r.put("msg",msg);
        r.put("data",obj);
        r.put("count",count);
        return r;
    }



}
